package IO流.IO流操作.节点流.inputStream和outputStream.输入流;

import java.io.*;

/**
 * 第二个IO程序：段落读取
 * 1.创建源
 * 2.选择流
 * 3.操作文件
 * 4.释放资源
 */
public class IOTest03 {
    public static void main(String[] args) {
        //1.创建源
       File src = new File("C:\\huangzhi\\workspace\\javaStudy\\src\\IO流\\IO流操作\\inputStream和outputStream\\输入流\\aaa.txt");
        //2.选择流
        InputStream inputStream = null;
        try {
            inputStream = new FileInputStream(src);
            //3.操作文件
            //每三个字符存一个池（缓冲容器）
           byte[] pool = new byte[1024];
           //接收长度（读取内容为空时，返回-1）
           int len= -1;
           //读取内容为空时，返回-1;;read(byte[])返回值为接收的数据的长度
            //inputStream.read(pool)会在流中操作下一个数据。因此赋值给len，用于接下来的转码 String str = new String(pool,0,len);
           while ((len= inputStream.read(pool))!=-1){
                //字节数组------>>>转换为字符串（解码）
              //此种方法若长度不能刚好被整除，就会“hello IOStream!0m!”往前借差的位数；若字节数大于，则打印空格（）不推荐
               String str1 = new String(pool);
               //“hello IOStream!0“（推荐）
               String str = new String(pool,0,len);

               System.out.print(str);

           }
            //若没有数据则返回负一
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //若资源没有被用到，则不用关闭（若不判断会造成空指针异常）
                if (null != inputStream) {
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        //4.释放资源
    }

}
